package main

/**
当我们想要在Go语言中初始化一个结构时，其实会使用到两个完全不同的关键字，也就是 make 和 new，同时出现两个用于初始化的关键字对于初学者来说可能
会感到非常困惑，不过它们两者有着却完全不同的作用。

在Go语言中，make 关键字的主要作用是初始化内置的数据结构，也就是我们在前面提到的数组、切片和 Channel，而当我们想要获取指向某个类型的指针时其实
可以使用 new 关键字，只是知道如何使用 new 的人真的比较少，下面我们就来介绍一下 make 和 new 它们的区别以及实现原理。

概述

虽然 make 和 new 都是能够用于初始化数据结构，但是它们两者能够初始化的结构类型却有着较大的不同；make 在Go语言中只能用于初始化语言中的基本类型：

		slice := make([]int, 0, 100)
		hash := make(map[int]bool, 10)
		ch := make(chan int, 5)

这些基本类型都是语言为我们提供的，我们在前面已经介绍过了它们初始化的过程以及原理，但是在这里还是需要提醒大家注意的是，这三者返回了不同类型的数据结构：

		slice 是一个包含 data、cap 和 len 的结构体；
		hash 是一个指向 hmap 结构体的指针；
		ch 是一个指向 hchan 结构体的指针；

而另一个用于初始化数据结构的关键字 new 的作用其实就非常简单了，它只是接收一个类型作为参数然后返回一个指向这个类型的指针：

		i := new(int)

		var v int
		i := &v

上述代码片段中的两种不同初始化方法其实是等价的，它们都会创建一个指向 int 零值的指针。

到了这里我们对Go语言中这两种不同关键字的使用也有了一定的了解：make 用于创建切片、哈希表和管道等内置数据结构，new 用于分配并创建一个指向对应类型的指针。

http://c.biancheng.net/view/5722.html 有点看不懂

总结

最后，简单总结一下Go语言中 make 和 new 关键字的实现原理，make 关键字的主要作用是创建切片、哈希表和 Channel 等内置的数据结构，而 new 的主要作用是为类
型申请一片内存空间，并返回指向这片内存的指针。
*/
func main() {
}
